﻿#!/usr/bin/env python
# -*- coding:utf-8 -*-

'thread introduction'

__author__='zhaoxp'

import time,threading,multiprocessing

def loop():
	x=0
	while True:
		x=x^1
		
# 这个测试用来线程对CPU的使用情况，先得到cpu数，然后启动的线程数等于CPU数，每个线程做一些耗费CPU的任务，这样查看OS是否满负荷运行，结果并不是满负荷运行。

# Python的线程虽然是真正的线程，但解释器执行代码时，有一个GIL锁：Global Interpreter Lock，任何Python线程执行前，必须先获得GIL锁，然后，每执行100条字节码，
# 解释器就自动释放GIL锁，让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁，所以，多线程在Python中只能交替执行，
# 即使100个线程跑在100核CPU上，也只能用到1个核。

if __name__=='__main__':
	cpus=multiprocessing.cpu_count()
	print 'cpu count is %d' % cpus
	for i in range(cpus):
		t=threading.Thread(target=loop)
		t.start()
